<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>SVDConv</title>
<title>CMSIS-SVD: SVDConv</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-SVD
   &#160;<span id="projectnumber">Version 1.3.6</span>
   </div>
   <div id="projectbrief">CMSIS System View Description</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('svd_SVDConv_pg.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">SVDConv </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><b>SVDConv</b> is a command-line utility to validate CMSIS-SVD files and to generate CMSIS-compliant device header files. <b>SVDConv</b> is distributed with the <b>ARM::CMSIS</b> Pack (in the CMSIS\Utilities directory) together with the <b>CMSIS-SVD.xsd</b> schema file. <b>SVDConv</b> is available for Windows and Linux operating systems.</p>
<p><b>SVDConv</b> performs the following operations:</p><ul>
<li>Checks the syntactical and structural compliance with the specified CMSIS-SVD format.</li>
<li>Checks the consistency, correctness, and completeness of the CMSIS-SVD file against the CMSIS-SVD schema file.</li>
<li>Generates CMSIS-compliant device header files, which can be used for software development.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Consider using --strict option to receive all pedantic warnings. Some rules are skipped by default due to backward compatibility reasons. All newly developed/updated SVD files should rather respect all rules.</dd></dl>
<h2><a class="anchor" id="autotoc_md4"></a>
Operation</h2>
<p><b>SVDConv</b> is invoked form the command line. The general command format is: </p><div class="fragment"><div class="line">SVDConv.exe &lt;SVD_file&gt; &lt;options&gt;</div>
</div><!-- fragment --><p>&#160;</p>
<table class="cmtable" summary="SVDConv Args">
<tr>
<th>&lt;options&gt; </th><th>Short Name </th><th>Description  </th></tr>
<tr>
<td><em>none</em>  </td><td>Validation </td><td>Perform a validation check of the SVD file. Errors and warnings are printed on screen.   </td></tr>
<tr>
<td>-b  </td><td>Log File </td><td>Specify the log file name for writing messages. Default: screen.   </td></tr>
<tr>
<td>-o  </td><td>Output Path </td><td>Specify an output path for the generated device header file or log file. Default: current directory.   </td></tr>
<tr>
<td>--generate=header  </td><td>Generate Device Header File </td><td>Generates the device header file. The name of the generated file is derived from the value of the tag &lt;devicename&gt; in the CMSIS-SVD file. Refer to <a class="el" href="elem_device.html">device</a>.   </td></tr>
<tr>
<td>--generate=partition  </td><td>Generate Partition file for Cortex-M Security Extensions (Armv8-M) </td><td>Generates the device partition file. The name of the generated file is composed of <em>partition_</em> and the value of the device <em>&lt;name&gt;</em> (for example, <em>partition_CMSDK_ARMv8MBL.h</em>). Refer to <a class="el" href="elem_device.html">/device element</a>. The content of the file uses Configuration Wizard annotations and is derived from the SAU-specific information of the <a class="el" href="elem_cpu.html#elem_sauRegionsConfig">/device/cpu/sauRegionsConfig element</a> and the interrupts specified in the <a class="el" href="elem_peripherals.html">/device/peripherals element</a>.  </td></tr>
<tr>
<td>--fields=enum  </td><td>Bit-field Enums </td><td>Generates enum lists for each field value description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>.  </td></tr>
<tr>
<td>--fields=macro  </td><td>Bit-field Macros </td><td>Generates position and mask C-Macros for each field description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>.  </td></tr>
<tr>
<td>--fields=struct  </td><td>Bit-field Structs </td><td>Generates bit fields for each field description contained in the CMSIS-SVD input file. Must be used in combination with <em>--generate=header</em>.  </td></tr>
<tr>
<td>--fields=struct-ansic  </td><td>ANSI Bit-field Structs </td><td>Generates MISRA-compliant structures for each bitfield. The generated code <b>is not CMSIS-compliant</b>! Must be used in combination with <em>--generate=header</em>.  </td></tr>
<tr>
<td>--strict </td><td>Strict error checking </td><td><b>RECOMMENDED!</b> Applies strict error checking and generates a lot more messages.  </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md5"></a>
Return Codes</h2>
<p><b>SVDConv</b> returns the following codes: <br  />
</p><table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadCenter">Code </th><th class="markdownTableHeadLeft">Description </th><th class="markdownTableHeadLeft">Action  </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyCenter">0 </td><td class="markdownTableBodyLeft">OK </td><td class="markdownTableBodyLeft">No action required. Validation and conversion performed without errors.  </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyCenter">1 </td><td class="markdownTableBodyLeft">WARNINGS </td><td class="markdownTableBodyLeft">Warnings should be checked an possibly removed. The header file is created and could be used.  </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyCenter">2 </td><td class="markdownTableBodyLeft">ERRORS </td><td class="markdownTableBodyLeft">Errors in the SVD description file. Important elements are missing and must be corrected.  </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyCenter">3 </td><td class="markdownTableBodyLeft">Error in command line </td><td class="markdownTableBodyLeft">Check and correct the command line arguments.  </td></tr>
</table>
<p><b>Examples</b> <br  />
</p><ol type="1">
<li>Retrieve help information on screen. <div class="fragment"><div class="line">SVDConv </div>
</div><!-- fragment --> <br  />
</li>
<li>Perform a consistency check by passing only the SVD file name. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv ARM_Example.svd </div>
</div><!-- fragment --> <br  />
 The result is printed on screen: <pre class="fragment">   MVCM3110.svd(1688) : info
   &lt;description&gt; missing for value '2 : MODE2'
   MVCM3110.svd(1692) : info
   &lt;description&gt; missing for value '3 : MODE3'
   MVCM3110.svd(1696) : info
   &lt;description&gt; missing for value '4 : MODE4'
   Area of improvements:
   * Description contains 267 &lt;fields&gt; defined without associated &lt;enumeratedValues&gt;
   Found 0 Errors and 1 Warnings
   Return Code: 1 (WARNINGS)</pre> <br  />
</li>
<li>Generate the header file. Performs a consistency check. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv ARM_Example.svd --generate=header</div>
</div><!-- fragment --> <br  />
 Code snippet from the generated header file showing the structure for <b>TIMER0</b>. <br  />
 <div class="fragment"><div class="line"><span class="comment">/* ================                     TIMER0                     ================ */</span></div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{                                    </div>
<div class="line">  __IO uint32_t  CR;                                </div>
<div class="line">  __IO uint16_t  SR;                                </div>
<div class="line">  __I  uint16_t  RESERVED0[5];</div>
<div class="line">  __IO uint16_t  INT;                               </div>
<div class="line">  __I  uint16_t  RESERVED1[7];</div>
<div class="line">  __IO uint32_t  COUNT;                             </div>
<div class="line">  __IO uint32_t  MATCH;                             </div>
<div class="line">  <span class="keyword">union </span>{</div>
<div class="line">    __O  uint32_t  PRESCALE_WR;                     </div>
<div class="line">    __I  uint32_t  PRESCALE_RD;                     </div>
<div class="line">  };</div>
<div class="line">  __I  uint32_t  RESERVED2[9];</div>
<div class="line">  __IO uint32_t  RELOAD[4];                         </div>
<div class="line">} TIMER0_Type;</div>
</div><!-- fragment --> <br  />
</li>
<li>Generate the header file containing bit fields. Performs a consistency check. Errors and warnings are printed on screen. <div class="fragment"><div class="line">SVDConv ARM_Example.svd --generate=header --fields=<span class="keyword">struct</span></div>
</div><!-- fragment --> <br  />
 Code snippet from the generated header file showing the structure for <b>TIMER0</b>. <br  />
 Compare to the code snippet above. <div class="fragment"><div class="line"><span class="comment">/* ================                     TIMER0                     ================ */</span></div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{                                    </div>
<div class="line">  <span class="keyword">union </span>{</div>
<div class="line">    __IO uint32_t  CR;                              </div>
<div class="line">    <span class="keyword">struct </span>{</div>
<div class="line">      __IO uint32_t  EN         :  1;               </div>
<div class="line">      __O  uint32_t  RST        :  1;               </div>
<div class="line">      __IO uint32_t  CNT        :  2;               </div>
<div class="line">      __IO uint32_t  MODE       :  3;               </div>
<div class="line">      __IO uint32_t  PSC        :  1;               </div>
<div class="line">      __IO uint32_t  CNTSRC     :  4;               </div>
<div class="line">      __IO uint32_t  CAPSRC     :  4;               </div>
<div class="line">      __IO uint32_t  CAPEDGE    :  2;               </div>
<div class="line">           uint32_t             :  2;</div>
<div class="line">      __IO uint32_t  TRGEXT     :  2;               </div>
<div class="line">           uint32_t             :  2;</div>
<div class="line">      __IO uint32_t  RELOAD     :  2;               </div>
<div class="line">      __IO uint32_t  IDR        :  2;               </div>
<div class="line">           uint32_t             :  3;</div>
<div class="line">      __IO uint32_t  S          :  1;               </div>
<div class="line">    } CR_b;                                         </div>
<div class="line">  };</div>
<div class="line">  </div>
<div class="line">  <span class="keyword">union </span>{</div>
<div class="line">    __IO uint16_t  SR;                              </div>
<div class="line">    <span class="keyword">struct </span>{</div>
<div class="line">      __I  uint16_t  RUN        :  1;               </div>
<div class="line">           uint16_t             :  7;</div>
<div class="line">      __IO uint16_t  MATCH      :  1;               </div>
<div class="line">      __IO uint16_t  UN         :  1;               </div>
<div class="line">      __IO uint16_t  OV         :  1;               </div>
<div class="line">           uint16_t             :  1;</div>
<div class="line">      __I  uint16_t  RST        :  1;               </div>
<div class="line">           uint16_t             :  1;</div>
<div class="line">      __I  uint16_t  RELOAD     :  2;               </div>
<div class="line">    } SR_b;                                         </div>
<div class="line">  };</div>
<div class="line">  __I  uint16_t  RESERVED0[5];</div>
<div class="line">  </div>
<div class="line">  <span class="keyword">union </span>{</div>
<div class="line">    __IO uint16_t  INT;                             </div>
<div class="line">    <span class="keyword">struct </span>{</div>
<div class="line">      __IO uint16_t  EN         :  1;               </div>
<div class="line">           uint16_t             :  3;</div>
<div class="line">      __IO uint16_t  MODE       :  3;               </div>
<div class="line">    } INT_b;                                        </div>
<div class="line">  };</div>
<div class="line">  __I  uint16_t  RESERVED1[7];</div>
<div class="line">  __IO uint32_t  COUNT;                             </div>
<div class="line">  __IO uint32_t  MATCH;                             </div>
<div class="line">  <span class="keyword">union </span>{</div>
<div class="line">    __O  uint32_t  PRESCALE_WR;                     </div>
<div class="line">    __I  uint32_t  PRESCALE_RD;                     </div>
<div class="line">  };</div>
<div class="line">  __I  uint32_t  RESERVED2[9];</div>
<div class="line">  __IO uint32_t  RELOAD[4];                         </div>
<div class="line">} TIMER0_Type;</div>
</div><!-- fragment --></li>
</ol>
<h1><a class="anchor" id="svdconvMessages"></a>
Error and Warning Messages</h1>
<p>The following table shows the errors and warnings issued by svdconv.</p>
<h2><a class="anchor" id="autotoc_md6"></a>
Invocation Errors</h2>
<table class="cmtable" summary="svdconv Invocation Msgs">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M020 </td><td>Text</td><td>SVD_STRING_OPTIONS</td><td>Displays programm help. </td></tr>
<tr>
<td>M021 </td><td>Text</td><td>"\n%DESCR% V%VER%\n%COPYRIGHT%\n"</td><td>Displays module name, version, date. </td></tr>
<tr>
<td>M022 </td><td>Text</td><td>"Found %ERR% Error(s) and %WARN% Warning(s)."</td><td>Displays the number of errors/warnings found. </td></tr>
<tr>
<td>M023 </td><td>Text</td><td>"\nPhase%CHECK%"</td><td>Information about the check pahse. <br  />
 </td></tr>
<tr>
<td>M024 </td><td>Text</td><td>"Arguments: %OPTS%"</td><td>Specify arguments. </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md7"></a>
Informative messages</h2>
<table class="cmtable" summary="Info Messages">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M040 </td><td>Info</td><td>"%NAME%: %TIME%ms. Passed"</td><td></td></tr>
<tr>
<td>M041 </td><td>Info</td><td>"Overall time: %TIME%ms."</td><td></td></tr>
<tr>
<td>M050 </td><td>Info</td><td>"Current Working Directory: '%PATH%'"</td><td></td></tr>
<tr>
<td>M051 </td><td>Info</td><td>"Reading SVD File: '%PATH%'"</td><td></td></tr>
<tr>
<td>M061 </td><td>Info</td><td>"Checking SVD Description"</td><td></td></tr>
</table>
<h2><a class="anchor" id="autotoc_md8"></a>
Invocation errors</h2>
<table class="cmtable" summary="Internal and Invocation Errors">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M101 </td><td>Error</td><td>"Unknown error!"</td><td>Please contact support. </td></tr>
<tr>
<td>M102 </td><td>Error</td><td>"MFC initialization failed"</td><td>Please contact support. </td></tr>
<tr>
<td>M103 </td><td>Error</td><td>"Internal Error: %REF%"</td><td>Please contact support. </td></tr>
<tr>
<td>M104 </td><td>Critical</td><td>"%MSG%"</td><td>Please contact support. </td></tr>
<tr>
<td>M105 </td><td>Error</td><td>"Cannot add Register to group sorter: '%NAME%'"</td><td></td></tr>
<tr>
<td>M106 </td><td>Error</td><td>"Command '%NAME%' failed: %NUM%: %MSG%"</td><td></td></tr>
<tr>
<td>M107 </td><td>Error</td><td>"Lost xml file stream."</td><td>Check SVD file. </td></tr>
<tr>
<td>M108 </td><td>Error</td><td>"SfrDis not supported."Disassembly not supported.</td><td></td></tr>
<tr>
<td>M109 </td><td>Error</td><td>"Cannot find '%NAME%'"</td><td>Check specified file. </td></tr>
<tr>
<td>M111 </td><td>Progress</td><td>"%NAME% failed!"</td><td>Check specified file. </td></tr>
<tr>
<td>M120 </td><td>Error</td><td>"Invalid arguments!"</td><td>Provide a list of valid arguments. </td></tr>
<tr>
<td>M121 </td><td>Error</td><td>"File not found %NAME%"Check specified file.</td><td></td></tr>
<tr>
<td>M122 </td><td>Error</td><td>"Name of command file should follow '@'"</td><td>Check specified command. </td></tr>
<tr>
<td>M123 </td><td>Error</td><td>"File not found: '%PATH%'!"</td><td>Check speficied path. </td></tr>
<tr>
<td>M124 </td><td>Error</td><td>"Cannot execute SfrCC2: '%PATH%'!"</td><td>Check path to SfrCC2. </td></tr>
<tr>
<td>M125 </td><td>Warning</td><td>"SfrCC2 report:\n%MSG%\nSfrCC2 report end.\n"</td><td></td></tr>
<tr>
<td>M126 </td><td>Warning</td><td>"SfrDis: %MSG%"</td><td></td></tr>
<tr>
<td>M127 </td><td>Error</td><td>"SfrCC2 reports errors!"</td><td>Check SVD file. </td></tr>
<tr>
<td>M128 </td><td>Warning</td><td>"SfrCC2 reports warnings!"</td><td>Check SVD file. </td></tr>
<tr>
<td>M129 </td><td>Error</td><td>"Option unknown: %OPT%'"</td><td>Check given option. </td></tr>
<tr>
<td>M130 </td><td>Error</td><td>"Cannot create file '%NAME%'"</td><td>Check user rights. </td></tr>
<tr>
<td>M132 </td><td>Error</td><td>"SfrCC2 report:\n%MSG%\nSfrCC2 report end.\n"</td><td></td></tr>
</table>
<h2><a class="anchor" id="autotoc_md9"></a>
Validation errors</h2>
<table class="cmtable" summary="Validation Errors">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M201 </td><td>Error</td><td>"Tag &lt;%TAG%&gt; unknown or not allowed on this level."</td><td>Check tag </td></tr>
<tr>
<td>M202 </td><td>Error</td><td>"Parse error: &lt;%TAG%&gt; = '%VALUE%'"</td><td>Check tag/value. </td></tr>
<tr>
<td>M203 </td><td>Error</td><td>"Value already set: &lt;%TAG%&gt; = '%VALUE%'"</td><td>Check tag/value. </td></tr>
<tr>
<td>M204 </td><td>Error</td><td>"Parse Error: '%VALUE%'"</td><td>Check value. </td></tr>
<tr>
<td>M205 </td><td>Warning</td><td>"Tag &lt;%TAG%&gt; empty"</td><td>Assign value to tag. </td></tr>
<tr>
<td>M206 </td><td>Error</td><td>"DerivedFrom not found: '%NAME%'"</td><td>Check derivate. </td></tr>
<tr>
<td>M207 </td><td>Error</td><td>"Expression marker found but no &lt;dim&gt; specified: '%NAME%'"</td><td>Specify dimension. </td></tr>
<tr>
<td>M208 </td><td>Error</td><td>"Ignoring &lt;dimIndex&gt; because specified &lt;name&gt; requires Array generation."</td><td>Generate an array. </td></tr>
<tr>
<td>M209 </td><td>Warning</td><td>"CPU section not set. This is required for CMSIS Headerfile generation and debug support."</td><td>Add CPU section. </td></tr>
<tr>
<td>M210 </td><td>Warning</td><td>"Use new Format CMSIS-SVD &gt;= V1.1 and add \&lt;CPU\&gt; Section."</td><td>Update schema and add CPU section. </td></tr>
<tr>
<td>M211 </td><td>Error</td><td>"Ignoring %LEVEL% %NAME% (see previous message)"</td><td></td></tr>
<tr>
<td>M212 </td><td>Error</td><td>"Address Block &lt;usage&gt; parse error: '%NAME%'"</td><td>Correct address block. </td></tr>
<tr>
<td>M213 </td><td>Error</td><td>"Expression for '%NAME%' incomplete, &lt;%TAG%&gt; missing."</td><td>Add tag. </td></tr>
<tr>
<td>M214 </td><td>Error</td><td>"Peripheral '%NAME%' &lt;dim&gt; single-instantiation is not supported (use Array instead)."</td><td>Correct Regs to Reg[s]. </td></tr>
<tr>
<td>M215 </td><td>Warning</td><td>"Size of &lt;dim&gt; is only one element for '%NAME%', is this intended?"</td><td>Check single element. </td></tr>
<tr>
<td>M216 </td><td>Warning</td><td>"Unsupported character found in '%NAME%' : %HEX%."</td><td>Correct name. </td></tr>
<tr>
<td>M217 </td><td>Warning</td><td>"Forbidden Trigraph '??%CHAR%' found in '%NAME%'."</td><td></td></tr>
<tr>
<td>M218 </td><td>Warning</td><td>"Unsupported ESC sequence found in '%NAME%' : %CHAR%."</td><td>Correct escape sequence. </td></tr>
<tr>
<td>M219 </td><td>Error</td><td>"C Code generation error: %MSG%"</td><td></td></tr>
<tr>
<td>M220 </td><td>Warning</td><td>"C Code generation warning: %MSG%"</td><td></td></tr>
<tr>
<td>M221 </td><td>Warning</td><td>"Input filename must end with .svd: '%NAME%"</td><td>Correct input filename extension. </td></tr>
<tr>
<td>M222 </td><td>Warning</td><td>"Input filename has no extension: '%NAME%"</td><td>Correct input filename extension. </td></tr>
<tr>
<td>M223 </td><td>Error</td><td>"Input File Name '%INFILE%' does not match the tag &lt;name&gt; in the &lt;device&gt; section: '%NAME%'"</td><td>Correct the MCU name. </td></tr>
<tr>
<td>M224 </td><td>Warning</td><td>"Deprecated: '%NAME%' Use '%NAME2%' instead"</td><td>Update SVD file. </td></tr>
<tr>
<td>M225 </td><td>Error</td><td>"Upper/lower case error: '%NAME%', should be '%NAME2%'"</td><td>Update SVD file. </td></tr>
<tr>
<td>M226 </td><td>Error</td><td>"SFD Code generation error: %MSG%"</td><td></td></tr>
<tr>
<td>M227 </td><td>Warning</td><td>"SFD Code generation warning: %MSG%"</td><td></td></tr>
<tr>
<td>M228 </td><td>Error</td><td>"Enumerated Value Container: Only one Item allowed on this Level!"</td><td>Remove additional items. </td></tr>
<tr>
<td>M229 </td><td>Error</td><td>"Register '%NAME%' is not an array, &lt;dimArrayIndex&gt; is not applicable"</td><td>Correct SVD. </td></tr>
<tr>
<td>M230 </td><td>Error</td><td>"Value '%NAME%:%NUM%' out of Range for %LEVEL% '%NAME2%[%NUM2%]'."</td><td>Correct SVD. </td></tr>
<tr>
<td>M231 </td><td>Error</td><td>"Value &lt;isDefault&gt; not allowed for %LEVEL%."</td><td>Correct SVD. </td></tr>
<tr>
<td>M232 </td><td>Error</td><td>"Tag &lt;%TAG%&gt; name '%NAME%' must not have specifier '%CHAR%'. Ignoring entry."</td><td>Correct SVD. </td></tr>
<tr>
<td>M233 </td><td>Error</td><td>"Parse error: &lt;%TAG%&gt; = '%VALUE%'"</td><td>Correct SVD. </td></tr>
<tr>
<td>M234 </td><td>Error</td><td>"No valid items found for %LEVEL% '%NAME%'"</td><td>Correct SVD. </td></tr>
<tr>
<td>M235 </td><td>Error</td><td>"%LEVEL% '%NAME%' cannot be an array."</td><td>Correct SVD. </td></tr>
<tr>
<td>M236 </td><td>Error</td><td>"Expression for &lt;%TAG%&gt; '%NAME%' not allowed."</td><td>Correct SVD. </td></tr>
<tr>
<td>M237 </td><td>Error</td><td>"Nameless %LEVEL% must have &lt;%TAG%&gt;."</td><td>Correct SVD. </td></tr>
<tr>
<td>M238 </td><td>Error</td><td>"%LEVEL% must not have &lt;%TAG%&gt;."</td><td>Correct SVD. </td></tr>
<tr>
<td>M239 </td><td>Error</td><td>"Dimed %LEVEL% '%NAME%' must have an expression."</td><td>Correct SVD. </td></tr>
<tr>
<td>M240 </td><td>Error</td><td>"Tag &lt;%TAG%&gt; unknown or not allowed on %LEVEL2%:%LEVEL%."</td><td>Correct SVD. </td></tr>
<tr>
<td>M241 </td><td>Error</td><td>"Parse Error: '%VALUE%' invalid for Array generation"</td><td>Correct SVD. </td></tr>
<tr>
<td>M242 </td><td>Warning</td><td>"%LEVEL% '%NAME%' &lt;dimArrayIndex&gt; found, but no &lt;dim&gt;"</td><td>Correct SVD. </td></tr>
<tr>
<td>M243 </td><td>Warning</td><td>"%LEVEL% '%NAME%' &lt;dimArrayIndex&gt; found, but &lt;dim&gt; does not describe an array"</td><td>Correct SVD. </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md10"></a>
Data Check Errors</h2>
<table class="cmtable" summary="Data Check Errors">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M301 </td><td>Error</td><td>"Interrupt number '%NUM% : %NAME%' already defined: %NAME2% %LINE%"</td><td></td></tr>
<tr>
<td>M302 </td><td>Error</td><td>"Size of Register '%NAME%:%NUM%' must be 8, 16 or 32 Bits"</td><td><br  />
 </td></tr>
<tr>
<td>M303 </td><td>Warning</td><td>"Register name '%NAME%' is prefixed with Peripheral name '%NAME2%'"</td><td>RegName = USART_CR ==&gt; USART-&gt;USART_CR </td></tr>
<tr>
<td>M304 </td><td>Warning</td><td>"Interrupt number overwrite: '%NUM% : %NAME%' %LINE%"</td><td><br  />
 </td></tr>
<tr>
<td>M305 </td><td>Error</td><td>"Name not C compliant: '%NAME%' : %HEX%, replaced by '_'"</td><td><br  />
 </td></tr>
<tr>
<td>M306 </td><td>Error</td><td>"Schema Version not set for &lt;device&gt;."</td><td><br  />
 </td></tr>
<tr>
<td>M307 </td><td>Error</td><td>"Name is equal to Value: '%NAME%'"</td><td><br  />
 </td></tr>
<tr>
<td>M308 </td><td>Error</td><td>"Number of &lt;dimIndex&gt; Elements '%NUM%' is different to number of &lt;dim&gt; instances '%NUM2%'"</td><td></td></tr>
<tr>
<td>M309 </td><td>Error</td><td>"Field '%NAME%': Offset error: %NUM%"</td><td><br  />
 </td></tr>
<tr>
<td>M310 </td><td>Error</td><td>"Field '%NAME%': BitWidth error: %NUM%"</td><td><br  />
 </td></tr>
<tr>
<td>M311 </td><td>Error</td><td>"Field '%NAME%': Calculation: MSB or LSB == -1"</td><td><br  />
 </td></tr>
<tr>
<td>M312 </td><td>Error</td><td>"Address Block missing for Peripheral '%NAME%'"</td><td><br  />
 </td></tr>
<tr>
<td>M313 </td><td>Error</td><td>"Field '%NAME%': LSB &gt; MSB: BitWith calculates to %NUM%"</td><td></td></tr>
<tr>
<td>M314 </td><td>Error</td><td>"Address Block: &lt;offset&gt; or &lt;size&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M315 </td><td>Error</td><td>"Address Block: &lt;size&gt; is zero."</td><td><br  />
 </td></tr>
<tr>
<td>M316 </td><td>Error</td><td>"%LEVEL% &lt;name&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M317 </td><td>Warning</td><td>"%LEVEL% &lt;description&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M318 </td><td>Warning</td><td>"%LEVEL% '%NAME%' &lt;%TAG%&gt; is equal to &lt;name&gt;"</td><td><br  />
 </td></tr>
<tr>
<td>M319 </td><td>Warning</td><td>"%LEVEL% &lt;%TAG%&gt; '%NAME%' ends with newline, is this intended?"</td><td></td></tr>
<tr>
<td>M320 </td><td>Warning</td><td>"%LEVEL% &lt;description&gt; '%NAME%' is not very descriptive"</td><td><br  />
 </td></tr>
<tr>
<td>M321 </td><td>Warning</td><td>"%LEVEL% &lt;%ITEM%&gt; '%NAME%' starts with '_', is this intended?"</td><td></td></tr>
<tr>
<td>M322 </td><td>Error</td><td>"%LEVEL% %ITEM% '%NAME%' is meaningless text. Deleted."</td><td><br  />
 </td></tr>
<tr>
<td>M323 </td><td>Warning</td><td>"%LEVEL% &lt;%ITEM%&gt; '%NAME%' contains text '%TEXT%'"</td><td><br  />
 </td></tr>
<tr>
<td>M324 </td><td>Error</td><td>"Field '%NAME%' %BITRANGE% does not fit into Register '%NAME2%:%NUM%' %LINE%"</td><td></td></tr>
<tr>
<td>M325 </td><td>Error</td><td>"CPU Revision is not set"</td><td><br  />
 </td></tr>
<tr>
<td>M326 </td><td>Error</td><td>"Endianess is not set, using default (little)"</td><td><br  />
 </td></tr>
<tr>
<td>M327 </td><td>Error</td><td>"NVIC Prio Bits not set or wrong value, must be 2..8. Using default (4)"</td><td></td></tr>
<tr>
<td>M328 </td><td>Warning</td><td>"%LEVEL% '%NAME%' has no Registers, ignoring %LEVEL%."</td><td><br  />
 </td></tr>
<tr>
<td>M329 </td><td>Error</td><td>"CPU Type is not set, using default (Cortex-M3)"</td><td><br  />
 </td></tr>
<tr>
<td>M330 </td><td>Error</td><td>"Interrupt '%NAME%' Number not set."</td><td><br  />
 </td></tr>
<tr>
<td>M331 </td><td>Error</td><td>"Interrupt '%NAME%' Number '%NUM%' greater 239."</td><td><br  />
 </td></tr>
<tr>
<td>M332 </td><td>Warning</td><td>"%LEVEL% '%NAME%' has only one Register."</td><td><br  />
 </td></tr>
<tr>
<td>M333 </td><td>Error</td><td>"Duplicate &lt;enumeratedValue&gt; %NUM%: '%NAME%' (%USAGE%), already used by '%NAME2%' (%USAGE2%) %LINE%"</td><td></td></tr>
<tr>
<td>M334 </td><td>Warning</td><td>"%LEVEL% &lt;%ITEM%&gt; '%NAME%' is very long, use &lt;description&gt; and a shorter &lt;name&gt;"</td><td></td></tr>
<tr>
<td>M335 </td><td>Error</td><td>"Value '%NAME%:%NUM%' does not fit into field '%NAME2%' %BITRANGE%."</td><td></td></tr>
<tr>
<td>M336 </td><td>Error</td><td>"%LEVEL% '%NAME%' already defined %LINE%"</td><td><br  />
 </td></tr>
<tr>
<td>M337 </td><td>Error</td><td>"%LEVEL% '%NAME%' already defined %LINE%"</td><td><br  />
 </td></tr>
<tr>
<td>M338 </td><td>Error</td><td>"Field '%NAME%' %BITRANGE% (%ACCESS%) overlaps '%NAME2%' %BITRANGE2% (%ACCESS2%) %LINE%"</td><td></td></tr>
<tr>
<td>M339 </td><td>Error</td><td>"Register '%NAME%' (%ACCESS%) (@%ADDRSIZE%) has same address or overlaps '%NAME2%' (%ACCESS2%) (@%ADDRSIZE2%) %LINE%"</td><td></td></tr>
<tr>
<td>M340 </td><td>Error</td><td>"No Devices found."</td><td><br  />
 </td></tr>
<tr>
<td>M341 </td><td>Error</td><td>"More than one devices found, only one is allowed per SVD File."</td><td></td></tr>
<tr>
<td>M342 </td><td>Error</td><td>"Dim-extended %LEVEL% '%NAME%' must not have &lt;headerStructName&gt;"</td><td></td></tr>
<tr>
<td>M343 </td><td>Error</td><td>"%LEVEL% '%NAME%' (@%ADDR%) has same address as '%NAME2%' %LINE%"</td><td></td></tr>
<tr>
<td>M344 </td><td>Error</td><td>"Register '%NAME%' (@%ADDRSIZE%) is outside or does not fit any &lt;addressBlock&gt; specified for Peripheral '%NAME2%'\n%TEXT%"</td><td></td></tr>
<tr>
<td>M345 </td><td>Error</td><td>"Field '%NAME%' %BITRANGE% does not fit into Register '%NAME2%:%NUM%'"</td><td></td></tr>
<tr>
<td>M346 </td><td>Warning</td><td>"Register '%NAME%' (@%ADDR%) offset is equal or is greater than it's Peripheral base address '%NAME2%' (@%ADDR2%), is this intended?"</td><td></td></tr>
<tr>
<td>M347 </td><td>Warning</td><td>"Field '%NAME%' (width &lt; 6Bit) without any &lt;enumeratedValue&gt; found."</td><td><br  />
 </td></tr>
<tr>
<td>M348 </td><td>Error</td><td>"Alternate %LEVEL% '%NAME%' does not exist at %LEVEL% address (@%ADDR%)"</td><td></td></tr>
<tr>
<td>M349 </td><td>Error</td><td>"Alternate %LEVEL% '%NAME%' is equal to %LEVEL% name '%NAME2%'"</td><td><br  />
 </td></tr>
<tr>
<td>M350 </td><td>Warning</td><td>"Peripheral '%NAME%' (@%ADDR%) is not 4Byte-aligned."</td><td><br  />
 </td></tr>
<tr>
<td>M351 </td><td>Warning</td><td>"Peripheral %TYPE% '%NAME%' is equal to Peripheral name."</td><td><br  />
 </td></tr>
<tr>
<td>M352 </td><td>Warning</td><td>"AddressBlock of Peripheral '%NAME%' (@%ADDR%) %TEXT% overlaps '%NAME2%' (@%ADDR2%) %TEXT2% %LINE%"</td><td></td></tr>
<tr>
<td>M353 </td><td>Warning</td><td>"Peripheral group name '%NAME%' should not end with '_'"</td><td></td></tr>
<tr>
<td>M354 </td><td>Error</td><td>"Interrupt '%NUM%:%NAME%' specifies a Core Interrupt. Core Interrupts must not be defined, they are set through \&lt;cpu&gt;&lt;name&gt;."</td><td></td></tr>
<tr>
<td>M355 </td><td>Error</td><td>"No Interrupts found on pos. 0..15. External (Vendor-)Interrupts possibly defined on position 16+. External Interrupts must start on position 0"</td><td></td></tr>
<tr>
<td>M356 </td><td>Warning</td><td>"No Interrupt definitions found."</td><td></td></tr>
<tr>
<td>M357 </td><td>Error</td><td>"Core Interrupts found. Interrupt Numbers are wrong. Internal Interrupts must not be described, External Interrupts must start at 0."</td><td></td></tr>
<tr>
<td>M358 </td><td>Error</td><td>"AddressBlock of Peripheral '%NAME%' %TEXT% overlaps AddressBlock %TEXT2% in same peripheral %LINE%"</td><td></td></tr>
<tr>
<td>M359 </td><td>Error</td><td>"Address Block: &lt;usage&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M360 </td><td>Error</td><td>"Address Block: found &lt;%TAG%&gt; (%HEXNUM%) &gt; %HEXNUM2%."</td><td><br  />
 </td></tr>
<tr>
<td>M361 </td><td>Error</td><td>"%LEVEL% %ITEM% '%NAME%': 'RESERVED' items must not be defined."</td><td><br  />
 </td></tr>
<tr>
<td>M362 </td><td>Warning</td><td>"%LEVEL% %ITEM% '%NAME%': 'RESERVED' items must not be defined."</td><td><br  />
 </td></tr>
<tr>
<td>M363 </td><td>Error</td><td>"CPU: &lt;sauNumRegions&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M364 </td><td>Error</td><td>"CPU: &lt;sauNumRegions&gt; value '%NUM%' greater than SAU max num (%NUM2%)"</td><td></td></tr>
<tr>
<td>M365 </td><td>Warning</td><td>"Register '%NAME%' (%ACCESS%) (@%ADDRSIZE%) has same address or overlaps '%NAME2%' (%ACCESS2%) (@%ADDRSIZE2%) %LINE%"</td><td></td></tr>
<tr>
<td>M366 </td><td>Error</td><td>"Register '%NAME%' size (%NUM%Bit) is greater than &lt;dimIncrement&gt; * &lt;addressBitsUnits&gt; (%NUM2%Bit)."</td><td></td></tr>
<tr>
<td>M367 </td><td>Warning</td><td>"Access Type: Field '%NAME%' (%ACCESS%) does not match Register '%NAME2%' (%ACCESS2%)"</td><td></td></tr>
<tr>
<td>M368 </td><td>Warning</td><td>"%LEVEL% '%NAME%' (@%ADDR%) has same address as '%NAME2%' %LINE%"</td><td></td></tr>
<tr>
<td>M369 </td><td>Error</td><td>"Enumerated Value '%NAME%': &lt;value&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M370 </td><td>Error</td><td>"%LEVEL% '%NAME%': &lt;offset&gt; not set."</td><td><br  />
 </td></tr>
<tr>
<td>M371 </td><td>Error</td><td>"%LEVEL% '%NAME%' &lt;headerStructName&gt; is equal to hirachical name"</td><td><br  />
 </td></tr>
<tr>
<td>M372 </td><td>Error</td><td>"%LEVEL% &lt;%TAG%&gt; '%NAME%' already defined %LINE%"</td><td><br  />
 </td></tr>
<tr>
<td>M373 </td><td>Error</td><td>"%LEVEL% &lt;%TAG%&gt; '%NAME%' already defined %LINE%"</td><td><br  />
 </td></tr>
<tr>
<td>M374 </td><td>Warning</td><td>"\&lt;enumeratedValues\&gt; can be one &lt;enumeratedValues&gt; container for all \&lt;enumeratedValue\&gt;s, where &lt;usage&gt; can be read, write, or read-write or two &lt;enumeratedValues&gt; containers, where one is set to &lt;usage&gt;read and the other is set to &lt;usage&gt;write"</td><td></td></tr>
<tr>
<td>M375 </td><td>Error</td><td>"%LEVEL% '%NAME%' (\&lt;enumeratedValues\&gt; '%NAME2%'): Too many &lt;enumeratedValues&gt; container specified."</td><td></td></tr>
<tr>
<td>M376 </td><td>Error</td><td>"%LEVEL% '%NAME%' (\&lt;enumeratedValues\&gt; '%NAME2%'): '%USAGE%' container already defined in %LINE%."</td><td></td></tr>
<tr>
<td>M377 </td><td>Error</td><td>"%LEVEL% '%NAME%' (\&lt;enumeratedValues\&gt; '%NAME2%'): '%USAGE%' container conflicts with '%NAME3%' %LINE%."</td><td></td></tr>
<tr>
<td>M378 </td><td>Error</td><td>"Register Array: Register '%NAME%' size (%NUM%Bit) does not match \&lt;dimIncrement\&gt; (%NUM2%Bit)."</td><td></td></tr>
<tr>
<td>M379 </td><td>Error</td><td>"XBin Number '%NAME%' too large, skipping evaluation."</td><td></td></tr>
<tr>
<td>M380 </td><td>Error</td><td>"AddressBlock of Peripheral '%NAME%' (@%ADDR%) %TEXT% does not fit into 32Bit Address Space."</td><td></td></tr>
<tr>
<td>M381 </td><td>Error</td><td>"Interrupt '%NAME%' Number '%NUM%' greater or equal deviceNumInterrupts (%NUM2%)."</td><td></td></tr>
<tr>
<td>M382 </td><td>Error</td><td>"%LEVEL% '%NAME%': %NAME2% '%HEXNUM%' does not fit into %LEVEL% width: %NUM% Bit."</td><td></td></tr>
</table>
<h2><a class="anchor" id="autotoc_md11"></a>
Data modification errors</h2>
<table class="cmtable" summary="SfrCC2 related Data modification Errors">
<tr>
<th>Message Number </th><th>Type </th><th>Description </th><th>Action  </th></tr>
<tr>
<td>M517 </td><td>Warning</td><td>"SFD Code generation: Forbidden Trigraph '??%CHAR%' found in '%NAME%'."</td><td></td></tr>
<tr>
<td>M516 </td><td>Warning</td><td>"SFD Code generation: Unsupported character found in '%NAME%' : %HEX%."</td><td></td></tr>
<tr>
<td>M518 </td><td>Warning</td><td>"SFD Code generation: Unsupported ESC sequence found in '%NAME%' : %CHAR%."</td><td></td></tr>
</table>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Tue Mar 17 2020 15:01:31 for CMSIS-SVD Version 1.3.6 by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 
	-->
	</li>
  </ul>
</div>
</body>
</html>
